JavaScript的八種型別乘載了資料,那麼Statement則化作軌跡驅使資料的運動;所以當鯊魚理解型別的本質之後,就要繼續滲入探套Statement最常用的內容:條件句以及迭代/迴圈。
Syntax(語法)
IfStatement :
if ( Expression(condition1)條件式1 ) {
Statement 1(述句1)
} else if( Expression(condition1)條件式2 ) {
Statement 2(述句2)
...
} else {
Statement else(述句else)
}
條件句,顧名思義就是有條件的句子,
當條件Expression(condition1)回應出Boolean值是true的時候
就會執行Statement 1的內容
當條件Expression(condition1)回應出Boolean值是fales的時候
會依序往下找其他條件句else if,直到有一個條件為true的時候
就會執行後面 Statement(述句)的內容
如果所有條件句都是false,則會執行else的Statement else,
如果沒有else,則條件句結束。
Expression(condition)條件式
是一組回傳true或是false的運算式,
更廣義的說只要值不是false、 undefined、 null、 0、 NaN、空字串 ("") 或是 轉換成Boolean值後不是false的物件,
都視為條件成立
當if的條件過多時,或是有一個以上的符合結果會使用switch條件句。
Syntax(語法)
switch ( Expression )
case value1:
Statement 1(述句1)
case value2:
Statement 2(述句2)
...
default :
Statement final(述句final)
switch條件句,比對Expression的值是否符合下面case的value,並執行其相關的Statement(述句),執行完之後會在繼續找下一個符合的value,直到最後的default跟Statement final。
如果只要一個複合條件的結果,會在Statement的最後面加一個break,結束這個條件句。
Semantics(語意)
迭代(iteration)是重複回饋過程的活動,其目的通常是為了接近併到達所需的目標或結果。每一次對過程的重複被稱為一次「迭代」,而每一次迭代得到的結果會被用來作為下一次迭代的初始值。
The do-while Statement
先執行一次「迭代」(do),再判斷要不要執行下一次「迭代」(while),
不論有無下一次「迭代」,do必定會執行一次「迭代」的動作
Syntax(語法)
do {
Statement
} while ( Expression(condition)條件式 ) ;
Statement為一次的「迭代」動作
Expression(condition)條件式:判斷要不要執行下一次「迭代」
The while Statement
while (Expression(condition)條件式) {
Statement
}
跟do-while類似,但是while(Expression)會先判斷要不要執行這一次的「迭代」動作
do-while跟while的迭代/迴圈都是運用在不確定會執行幾次的迭代/迴圈
The for Statement
相較於do-while跟while的迭代/迴圈,for系列的迭代/迴圈很明確的定義了迭代執行的次數
for ( initialExpression; Expression(condition) ; incrementExpression ){
Statement
}
for 後面的()有三個Expression,分別表示不同的功用
initialExpression:初始的表達式,其內容會隨著迭代/迴圈的運行而變化。
Expression(condition):終止的判斷式,當判斷結果為false時則中斷迭代/迴圈,如果省略則為true會進入無限迭代/迴圈。
incrementExpression:更新表達式,使初始的表達式的內容作變化,最終目的是將終止判斷式結果為false,使其終止/迴圈。
如果在其中宣告變數,記得用let宣告,通常會使用變數i、j、k。
The for-in, for-of, and for-await-of Statements
for-in
:for ( let LeftHandSideExpression(變數) in Expression){
Statement
}
將Expression的key/索引值取出,作為執行迭代的參數。
Expression的限制:該對象的Property Descriptor(屬性描述器)中
enumerable: 必須是true。
迭代的次數取決於Expression的長度
for-of
:for ( let LeftHandSideExpression(變數) of Expression ){
Statement
}
透過for-of迭代/迴圈將Expression的值依序取出。
Expression是一個可迭代的對象(Array,Map,Set,String,TypedArray,arguments等等)
for await-of
:for await ( let LeftHandSideExpression(變數) of Expression ){
Statement
}
這是一個非同步的迭代/迴圈,必須在async function內使用,後續說到同步與非同步函式的時候會在一起說明,其用法跟for-of相似。
感覺JavaScript的東西都是環環相扣的,嘗試理解A部分,卻發現有B部分的東西不懂,當去深入探討B部分的時候,缺又有C部分感到疑惑,有時候會好奇自己的閱讀順序是不是有問題,但是鯊魚或許會迷惘但是不會停滯不前,不懂的部分就慢慢的一步一步去弄懂他,千里之行始於足下,逐步的前進,現在放棄起賽就結束了。
參考資料